package com.work.service.main;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.work.dto.main.TShipBillStatusSearchDTO;
import com.work.entity.main.TShipBillStatus;
import com.work.vo.main.*;
import org.springblade.core.mp.base.BaseService;

import java.math.BigDecimal;

/**
 * 理货舱单状态接口
 *
 * @author ：dujianyu
 * @since ：Created in 2024/3/14 8:47
 */
public interface ITShipBillStatusService extends BaseService<TShipBillStatus> {

    /**
     * 添加新理货舱单状态
     * @param  tShipBillId 理货舱单ID
     * @param  transportShipId 货运船id
     * @param  transportBillId 货运舱单ID
     * @return  boolean
     * @author dujianyu
     * @since 2024/3/14 9:02
     */
    boolean addTshipBillStatus(Long tShipBillId, Long transportShipId, Long transportBillId);

    /**
     * 更改件吨数
     * @param tallyType 理货方式
     * @param addOrSub 增加或减少
     * @param tShipBillId 理货舱单ID
     * @param piece 件数
     * @return ton 吨数
     * @author dujianyu
     * @since 2024/3/14 14:39
     */
    boolean changePieceTon(String tallyType, String addOrSub, Long tShipBillId, Integer piece, BigDecimal ton);

    /**
     * 船出口舱单统计分页
     * @param page 分页
     * @param dto 搜索DTO
     * @return IPage<ShipBillStatVO>
     * @author dujianyu
     * @since 2024/6/26 13:36
     */
    IPage<ExpShipBillStatVO> shipExpBillStatPage(IPage<ExpShipBillStatVO> page, TShipBillStatusSearchDTO dto);

    /**
     * 船出口舱单统计合计
     * @param dto 搜索参数
     * @return ExpShipBillStatTotalVO
     * @author dujianyu
     * @since 2024/7/17 9:29
     */
    ExpShipBillStatTotalVO shipExpBillStatTotal(TShipBillStatusSearchDTO dto);

    /**
     * 船进口舱单统计分页
     * @param page 分页
     * @param dto 搜索条件
     * @return IPage<ImpShipBillStatVO>
     * @author dujianyu
     * @since 2024/7/1 14:34
     */
    IPage<ImpShipBillStatVO> shipImpBillStatPage(IPage<ImpShipBillStatVO> page, TShipBillStatusSearchDTO dto);

    /**
     * 船进口舱单统计合计
     * @param dto 搜索条件
     * @return ImpShipBillStatTotalVO
     * @author dujianyu
     * @since 2024/7/17 13:32
     */
    ImpShipBillStatTotalVO shipImpBillStatTotal(TShipBillStatusSearchDTO dto);

    /**
     * 更新状态
     * @param entity 数据
     * @return TShipBillStatus
     * @author dujianyu
     * @since 2024/6/26 15:24
     */
    TShipBillStatus updateStatus(TShipBillStatus entity);

    /**
     * 返回舱单清空条件字段 （船名，是否完结）
     * @param transportBillId 舱单ID
     * @return CheckBillClearVO
     * @author dujianyu
     * @since 2024/6/27 10:19
     */
    CheckBillClearVO checkBillClear(Long transportBillId);

    /**
     * 船统计理货分页
     * @param page 分页
     * @param dto 搜索条件
     * @return IPage<ShipStatTallyVO>
     * @author dujianyu
     * @since 2024/6/28 13:49
     */
    IPage<ShipStatTallyVO> shipStatTallyPage(IPage<ShipStatTallyVO> page, TShipBillStatusSearchDTO dto);
}
